Bahasa Indonesia

Jelajahi CSS Subgrid dan pelajari cara membuat tata letak bertingkat yang kompleks, responsif, dan mudah dikelola untuk desain web modern. Kuasai teknik grid tingkat lanjut.

CSS Subgrid: Melepas Kekuatan Tata Letak Bertingkat

CSS Grid telah merevolusi tata letak web, menawarkan fleksibilitas dan kontrol yang tak tertandingi. Namun, mengelola grid bertingkat terkadang bisa menjadi rumit. Di situlah CSS Subgrid datang untuk menyelamatkan. Subgrid memungkinkan item grid untuk mewarisi ukuran trek dari grid induknya, menyederhanakan tata letak yang kompleks dan membuat kode Anda lebih mudah dikelola. Artikel ini menyediakan panduan komprehensif untuk memahami dan mengimplementasikan CSS Subgrid, lengkap dengan contoh praktis dan wawasan untuk pengembang dari semua tingkatan.

Apa itu CSS Subgrid?

Subgrid adalah fitur dari CSS Grid yang memungkinkan sebuah item grid menjadi grid itu sendiri, mewarisi trek baris dan kolom yang ditentukan oleh grid induknya. Ini berarti Anda dapat menyelaraskan konten di beberapa grid bertingkat tanpa secara eksplisit mendefinisikan ukuran trek di setiap grid bertingkat. Anggap saja ini sebagai cara untuk memperluas struktur grid induk ke anak-anaknya, menciptakan tata letak yang lebih kohesif dan konsisten.

Mengapa Menggunakan Subgrid?

Kompatibilitas Browser

Sebelum masuk ke implementasi, penting untuk memeriksa kompatibilitas browser. Pada akhir tahun 2023, Subgrid menikmati dukungan yang baik di seluruh browser modern termasuk Chrome, Firefox, Safari, dan Edge. Namun, selalu merupakan praktik yang baik untuk menggunakan Can I use untuk memverifikasi status dukungan terbaru.

Implementasi Dasar Subgrid

Mari kita mulai dengan contoh sederhana untuk mengilustrasikan konsep dasar Subgrid.

Struktur HTML

Pertama, kita mendefinisikan struktur HTML dasar untuk grid kita.


<div class="container">
  <div class="header">Header</div>
  <div class="sidebar">Sidebar</div>
  <div class="content">
    <div class="item-1">Item 1</div>
    <div class="item-2">Item 2</div>
    <div class="item-3">Item 3</div>
    <div class="item-4">Item 4</div>
  </div>
  <div class="footer">Footer</div>
</div>

Penataan Gaya CSS

Sekarang, mari kita definisikan CSS untuk membuat grid induk dan subgrid di dalam elemen .content.


.container {
  display: grid;
  grid-template-columns: 200px 1fr;
  grid-template-rows: auto 1fr auto;
  grid-template-areas:
    "header header"
    "sidebar content"
    "footer footer";
  height: 100vh;
}

.header {
  grid-area: header;
  background-color: #eee;
  padding: 10px;
}

.sidebar {
  grid-area: sidebar;
  background-color: #ddd;
  padding: 10px;
}

.content {
  grid-area: content;
  display: grid;
  grid-template-columns: subgrid;
  grid-template-rows: subgrid;
  background-color: #ccc;
  padding: 10px;
}

.item-1, .item-2, .item-3, .item-4 {
  background-color: #bbb;
  padding: 10px;
}

.footer {
  grid-area: footer;
  background-color: #eee;
  padding: 10px;
}

/* Define placement of items inside the .content subgrid */
.content {
    grid-template-columns: subgrid;
    grid-template-rows: subgrid;
    display: grid;
}

.item-1 { grid-column: 1; grid-row: 1; }
.item-2 { grid-column: 2; grid-row: 1; }
.item-3 { grid-column: 1; grid-row: 2; }
.item-4 { grid-column: 2; grid-row: 2; }


Dalam contoh ini, elemen .content didefinisikan sebagai subgrid. Properti grid-template-columns: subgrid; dan grid-template-rows: subgrid; menginstruksikan subgrid untuk mewarisi ukuran trek dari grid induk. Area konten sekarang sesuai dengan ukuran trek yang ditentukan di grid kontainer utama, tanpa memerlukan pengaturan eksplisit untuk subgrid itu sendiri. Ini memastikan penyelarasan yang sempurna antara sidebar dan item di dalam area konten.

Teknik Subgrid Tingkat Lanjut

Merentangkan Trek

Subgrid juga memungkinkan item di dalam subgrid untuk merentang beberapa trek, sama seperti di grid biasa. Ini memberikan fleksibilitas yang lebih besar dalam membuat tata letak yang kompleks.


.item-1 {
  grid-column: 1 / span 2;
  grid-row: 1;
}

Kode ini akan membuat .item-1 merentang di dua kolom pertama dari subgrid.

Garis Grid Bernama

Anda dapat menggunakan garis grid bernama dengan Subgrid untuk kejelasan dan kontrol yang lebih besar. Katakanlah Anda memiliki garis bernama di grid induk Anda:


.container {
  display: grid;
  grid-template-columns: [sidebar-start] 200px [sidebar-end content-start] 1fr [content-end];
  grid-template-rows: [header-start] auto [header-end content-start] 1fr [content-end footer-start] auto [footer-end];
  grid-template-areas:
    "header header"
    "sidebar content"
    "footer footer";
  height: 100vh;
}

Anda kemudian dapat mereferensikan garis bernama ini di dalam subgrid Anda:


.content {
  grid-area: content;
  display: grid;
  grid-template-columns: subgrid;
  grid-template-rows: subgrid;
}

.item-1 {
  grid-column: content-start / content-end;
  grid-row: content-start;
}

Menangani Trek Implisit

Jika jumlah item grid melebihi jumlah trek yang ditentukan di grid induk, Subgrid akan membuat trek implisit. Anda dapat mengontrol ukuran trek implisit ini menggunakan properti grid-auto-rows dan grid-auto-columns, mirip dengan CSS Grid biasa.

Contoh Praktis dan Kasus Penggunaan

Mari kita jelajahi beberapa contoh praktis tentang bagaimana Subgrid dapat digunakan untuk membuat tata letak yang canggih.

Daftar Produk yang Kompleks

Bayangkan daftar produk di mana Anda ingin menampilkan beberapa detail produk (gambar, nama, deskripsi, harga) secara konsisten dan selaras. Subgrid dapat membantu mencapai ini dengan mudah.


<div class="product-grid">
  <div class="product">
    <img src="product1.jpg" alt="Produk 1">
    <h3>Nama Produk 1</h3>
    <p>Deskripsi produk 1.</p>
    <span>$99.99</span>
  </div>
  <div class="product">
    <img src="product2.jpg" alt="Produk 2">
    <h3>Nama Produk 2</h3>
    <p>Deskripsi produk 2.</p>
    <span>$129.99</span>
  </div>
</div>

.product-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: 20px;
}

.product {
  display: grid;
  grid-template-columns: subgrid;
  grid-template-rows: subgrid;
  border: 1px solid #ccc;
  padding: 10px;
}

.product > img {
  grid-column: 1;
  grid-row: 1;
  width: 100%;
  height: auto;
}

.product > h3 {
  grid-column: 1;
  grid-row: 2;
  margin-top: 10px;
}

.product > p {
  grid-column: 1;
  grid-row: 3;
  margin-top: 5px;
}

.product > span {
  grid-column: 1;
  grid-row: 4;
  margin-top: 10px;
  font-weight: bold;
}

Dalam contoh ini, elemen .product menggunakan Subgrid untuk menyelaraskan gambar, nama, deskripsi, dan harga secara konsisten di semua produk, bahkan jika panjang kontennya bervariasi. Ini memastikan presentasi yang bersih dan profesional.

Tata Letak Majalah

Membuat tata letak gaya majalah dengan blok konten yang bervariasi bisa menjadi tantangan. Subgrid menyederhanakan proses dengan memungkinkan Anda menyelaraskan elemen di berbagai bagian tata letak.


<div class="magazine-layout">
  <div class="main-article">
    <h2>Judul Artikel Utama</h2>
    <p>Konten artikel utama...</p>
  </div>
  <div class="sidebar-article">
    <h3>Judul Artikel Sidebar</h3>
    <p>Konten artikel sidebar...</p>
  </div>
  <div class="featured-image">
    <img src="featured.jpg" alt="Gambar Unggulan">
  </div>
</div>

.magazine-layout {
  display: grid;
  grid-template-columns: 2fr 1fr;
  grid-template-rows: auto 1fr auto;
  gap: 20px;
}

.main-article {
  grid-column: 1;
  grid-row: 1 / span 2;
  border: 1px solid #ccc;
  padding: 10px;
}

.sidebar-article {
  grid-column: 2;
  grid-row: 1;
  border: 1px solid #ccc;
  padding: 10px;
}

.featured-image {
  grid-column: 2;
  grid-row: 2;
  border: 1px solid #ccc;
  padding: 10px;
}

.magazine-layout > div {
    display: grid;
    grid-template-columns: subgrid;
    grid-template-rows: subgrid;
}

.magazine-layout h2, .magazine-layout h3 {
    grid-column: 1;
    grid-row: 1;
}

.magazine-layout p {
    grid-column: 1;
    grid-row: 2;
}

.magazine-layout img {
    grid-column: 1;
    grid-row: 1;
}

Dalam contoh ini, artikel utama, artikel sidebar, dan gambar unggulan semuanya berbagi struktur grid yang sama, memastikan penyelarasan judul dan konten yang konsisten di berbagai bagian. Penggunaan Subgrid menyederhanakan CSS dan membuat tata letak lebih mudah dikelola.

Tata Letak Formulir

Membuat tata letak formulir yang kompleks dengan label dan input yang selaras bisa jadi rumit. Subgrid menyediakan solusi yang lugas.


<form class="form-grid">
  <div class="form-row">
    <label for="name">Nama:</label>
    <input type="text" id="name" name="name">
  </div>
  <div class="form-row">
    <label for="email">Email:</label>
    <input type="email" id="email" name="email">
  </div>
  <div class="form-row">
    <label for="message">Pesan:</label>
    <textarea id="message" name="message"></textarea>
  </div>
</form>

.form-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 10px;
}

.form-row {
  display: grid;
  grid-template-columns: subgrid;
  grid-template-rows: subgrid;
}

.form-row label {
  grid-column: 1;
  grid-row: 1;
  text-align: right;
  padding-right: 10px;
}

.form-row input, .form-row textarea {
  grid-column: 2;
  grid-row: 1;
  width: 100%;
}


.form-grid {
    display: grid;
    grid-template-columns: 150px 1fr; /* Tentukan ukuran trek di grid induk */
    gap: 10px;
}

Di sini, elemen .form-row menggunakan Subgrid untuk menyelaraskan label dan bidang input secara konsisten di semua baris. Ukuran trek ditentukan di grid induk (.form-grid), memastikan penampilan yang seragam.

Praktik Terbaik dan Pertimbangan

Subgrid vs. CSS Grid Biasa

Meskipun Subgrid dan CSS Grid keduanya adalah alat tata letak yang kuat, mereka melayani tujuan yang berbeda. CSS Grid biasa ideal untuk membuat tata letak halaman secara keseluruhan dan mendefinisikan struktur dasar konten Anda. Subgrid, di sisi lain, paling cocok untuk mengelola tata letak bertingkat dan menyelaraskan konten di berbagai tingkat tingkatan. Anggap Subgrid sebagai ekstensi dari CSS Grid yang menyederhanakan skenario tata letak yang kompleks.

Mengatasi Masalah Umum

Kesimpulan

CSS Subgrid adalah tambahan berharga untuk perangkat CSS Grid, menawarkan cara yang ampuh untuk mengelola tata letak bertingkat yang kompleks dan membuat desain web yang menarik secara visual, mudah dikelola, dan responsif. Dengan memahami konsep dasar dan menjelajahi contoh praktis, Anda dapat memanfaatkan Subgrid untuk membangun tata letak canggih yang sebelumnya sulit atau tidak mungkin dicapai dengan teknik CSS tradisional. Rangkul Subgrid dan buka kemungkinan baru dalam proyek pengembangan web Anda. Subgrid memungkinkan Anda untuk benar-benar memperluas kekuatan CSS grid ke elemen bertingkat, memungkinkan kontrol dan pemeliharaan kode yang lebih besar. Bereksperimenlah dengannya dan jelajahi keuntungan dalam menyederhanakan tata letak CSS yang rumit.

Sumber Daya Lebih Lanjut